1. Field of the Invention
The present invention relates to a reliable communication method and a device thereof.
2. Description of the Related Art
In communication, a function to communicate data among communicators without omission or repetition and maintaining order is essential. In the following description, “reliable communication” means such communication.
TCP (transmission control protocol) used in the Internet is a typical communication method for realizing the “reliable communication”.
In order to realize “reliable communication”, theoretically, a receiver notifies a transmitter of the reception of data (acknowledgement, hereinafter abbreviated “ack”), and the transmitter must re-transmit the data in response to this reception notice, which is called “re-transmission control method”. As its prior art, ARQ (automatic repeat request) is known as a basic method. The ack method includes its variations, such as Stop and Wait, Go Back N, Selective ACK and the like.
As another reliable communication method, there is Forward Error Correction (FEC). In this technology, a transmitter anticipates data loss and transmits data to which redundant data, such as error correction information or the like is added, and a receiver reproduces original data from the received data. However, if data loss becomes large as unexpected, original data cannot be reproduced. Therefore, the method cannot be always used. So, FEC method is out of question.
FIGS. 1 and 2 explain the conventional ACK method.
FIG. 1 explains Stop and Wait method. In order to perform re-transmission control, a transmitter transmits data, and a receiver returns ack to the transmitter every time receiving data. The transmitter recognized data received by the receiver by receiving ack, and if data is lost, it re-transmits the lost data. If ack is lost, the transmitter counts time elapsing after transmitting the last data and re-transmits by time-out. Such a method is called Stop and Wait.
In FIG. 1, the transmitter transmits data K to the receiver, ack K+1 is returned. Then, the transmitter transmits data K+1. In this case, if data K+1 is lost, the receiver does not transmit ack since the receiver receives no data K+1. Therefore, the transmitter continues to count time elapsing after transmitting data K+1 without receiving ack. When time-out occurs, the transmitter re-transmits data K+1. Upon receipt of this re-transmitted data K+1, the receiver returns ack K+2 to the transmitter. In this case, it is assumed that ack K+2 is lost. Then, since the transmitter cannot receive ack, the transmitter counts time elapsing after lastly re-transmitting data K+1, and if it is time-outed, the transmitter re-transmits data K+1 again. Upon normal receipt of the data K+1, the receiver transmits ack K+2 to the transmitter. Upon normal receipt of the ack K+2, the transmitter terminates the normal communication and transmits subsequent data.
FIG. 2 explains Go Back N method. If as shown in FIG. 1, a transmitter checks the receipt of ack every time transmitting data, efficiency degrades. Therefore, a plurality of segments of data is transmitted without ack. In this method, the transmitter transmits a plurality of segments of data without receiving ack. If data is lost, a receiver detects data loss, and requests the transmitter to re-transmit the lost data. In Go Back N, at this moment the transmitter transmits all data after the lost data requested to re-transmit. However, in Selective ACK, only the lost data is selectively transmitted. In either method, unless the transmitter receives ack, all data is re-transmitted by the time-out of the transmitter.
In FIG. 2, a transmitter transmits data K through data K+2 at one time, and if the loss of data K+1 is detected, a receiver transmits ack K+1 requesting the re-transmission of data K+1 to the transmitter. Upon receipt of ack K+1, the transmitter re-transmits both data K+1 and data K+2. Although upon receipt of data K+1, the receiver transmits ack K+1 to the transmitter, in FIG. 2, this ack is lost. Therefore, the transmitter counts time elapsing after transmitting data K+1, and if time-outed, the transmitter automatically re-transmits data K+1. When the receiver receives this data K+1, ack K+2 is transmitted to the transmitter.
Conventionally, in Patent Reference 1, a technology for performing the error recovery of a failure at a layer 2 level by the re-transmission function of the control message of layer 3 is disclosed. In Patent Reference 2 too, a technology for performing the error recovery of a failure at a layer 2 level at layer 3 is disclosed. In Patent Reference 3, a technology in which a transmitting station performs the poling of a receiving station in multicast transfer is disclosed. In Patent Reference 4, it is disclosed that re-transmission control in which redundancy is eliminated is performed in multi-cast. In Patent Reference 5, a system for making temporary transmission/reception confirmation/response is disclosed.    Patent Reference 1: Japanese Patent Application No. 5-183644    Patent Reference 2: Japanese Patent Application No. 5-122278    Patent Reference 3: Japanese Patent Application No. 11-196041    Patent Reference 4: Japanese Patent Application No. 2001-237883    Patent Reference 5: Japanese Patent Application No. 2002-247132
In the conventional re-transmission control method, when ack is transmitted/received between a transmitter and a receiver, the transmitter cannot determine which should be transmitted, new data or re-transmission data before receiving ack from the receiver. For this reason, the transmitter must always wait for ack after transmitting a specific of data. This cannot be theoretically avoided. The transmission/reception of ack requires Round Trip Time (RTT). If a transmitter and a receiver are far apart, RTT increases. Accordingly, ack receiving intervals expand, and as a result, communication performance degrades, which is a problem. In TCP, there is this problem, and it is known that performance degrades in long-haul communication.
Communication efficiency can be improved by combining Go Back N with Selective ACK. However, even in that case, subsequent data cannot be transmitted without receiving ack as reception confirmation, and a transmitter must transmit subsequent data by time-out.